class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
         if (nums.empty()) { // 处理空数组情况
            return {-1, -1};
        }
        auto x1 = lower_bound(nums.begin(), nums.end(), target);
        auto x2 = upper_bound(nums.begin(), nums.end(), target);
        if(x1 ==  nums.end() || *x1 != target)
        {
            return {-1, -1};
        }
        int dist1 = distance(nums.begin(), x1);
        int dist2 = distance(nums.begin(), x2) - 1;
    
        return {dist1, dist2};
        /*nums2 = {1, 2, 4, 5}，target2 = 3，std::lower_bound 会返回指向 4 的迭代器，x1 != nums.end()，但 *x1 != target 为真，函数同样返回 {-1, -1}。
综上所述，添加 *x1 != target 这个条件是为了处理数组中存在比 target 大的元素，但没有等于 target 的元素这种情况。*/
    }
};
